
22.12.2016, 12:26
|
 |
Новичок на форуме
|
|
Регистрация: 22.12.2016
Сообщений: 7
|
|
На почту не приходят письма с заявками отправленные через лендинг
Всем привет, не могу разобраться почему на почту с лендинга не приходят заявки.
Есть файл script.js в нём есть такая часть содержимого.
function clearForm () {
$(this).removeClass('valid-for-file-upload');
$('input:not(":checkbox"), textarea, select').val('');
$('.form-group').removeClass('has-success').removeClass('has-error');
formtype = '';
};
$thisText = $(this).text();
$thisBtn.addClass('disabled').text('Отправка...')
$.ajax({ //отправляем аяксом
url:'php/mail.php',
type:'POST',
data:'jsonData=' + $.toJSON(formData),
success: function() {
$('.submit-form-loading').fadeOut();
$('.submit-form-error').fadeOut();
magnificPopup.close();
setTimeout(function() {
$('.thank-you-btn').magnificPopup({
type: 'ajax',
removalDelay: 500,
ajax: {
settings: null,
cursor: 'mfp-ajax-cur',
tError: '<a href="%url%">Контент</a> не может быть загружен.',
},
callbacks: {
beforeOpen: function() {
this.st.mainClass = 'mfp-zoom-in';
},
},
midClick: true
}).magnificPopup('open');
}, 501);
$thisBtn.removeClass('disabled').text($thisText);
clearForm ();
reachGoalFunc(yaTarget);
reachGoalFunc(obwee_koli4estvo);
},
error: function() {
alert('При отправке данных произошла ошибка, попробуйте снова.');
$thisBtn.removeClass('disabled').text($thisText);
clearForm ();
}
});
}
});
});
В файле index.php следующая часть кода:
<div class="buy-one-click">
<div class="container">
<div class="section-title">
<h3>Продайте всего за 1 клик!</h3>
</div>
<a href="modal-service1.html" class="ajax-popup-link btn btn-success" style="text-transform: none; padding: 20px 20px 20px 40px; width:300px; margin:10px auto 0; display:block; line-height: 0.8;position:relative; font-size:22px;"><img src="img/arrow-right.png" style="position:absolute; top:21px;left:53px;">Оставить
заявку</a>
</div>
И третий файл mail.php
<?php
if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
$to = "online@yandex.ru"; /*Укажите адрес, га который должно приходить письмо*/
$sendfrom = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$subject = "Новая заявка";
$message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone<br>";
$send = mail ($to, $subject, $message, $headers);
?>
Не могу понять где тут и что неправильно.
|
|

22.12.2016, 13:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Что такое formData, и каким это образом на сервере появятся $_POST['notEmpty'], $_POST['phone'], $_POST['formData'], если сервер получит JSON под ключом jsonData?
|
|

22.12.2016, 14:19
|
 |
Новичок на форуме
|
|
Регистрация: 22.12.2016
Сообщений: 7
|
|
Как тогда правильно настроить этот mail.php ?Я так с примеров вытащил данную форму.
|
|

22.12.2016, 17:54
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Ничего не надо настраивать, нужно принимать, что отдал клиент, а не писать отсебятину.
Во-первых, в коде клиентском не видно, что такое formData.
Во-вторых в jQury нет метода преобразования объекта в JSON, это делается его плагином методом $.toJSON().
То есть, если formData, это действительно объект описывающий поля формы
{notEmpty : значение, phone : значение, formData : значение}, то этот объект будет передан серверу как json-строка под ключом jsonData.
Чтобы получить поля формы, из этого, нужно:
$post = json_encode($_POST['jsonData']); //получим объект
//получить в котором значение поля к примеру phone так
$phone = $post->phone;
//если же после преобразования нужен не объект, а массив, то так
$post = json_encode($_POST['jsonData'], 1);
//а значение поля phone так
$phone = $post['phone'];
Так что разбирайтесь сначала с тем что отправляет клиент.
Последний раз редактировалось laimas, 22.12.2016 в 18:50.
|
|

22.12.2016, 20:04
|
 |
Новичок на форуме
|
|
Регистрация: 22.12.2016
Сообщений: 7
|
|
Реально не понятно как сделать рабочий файл mail.php
Письма не долетают, может реально подскажет как правильно настроить этот файл?
|
|

23.12.2016, 00:05
|
 |
Новичок на форуме
|
|
Регистрация: 22.12.2016
Сообщений: 7
|
|
Вставил так код приходит только следующее пустое значение, где нет отображения имени отправителя и номер телефона.
Имя отправителя:
Телефон:
<?php
if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
$to = "online@yandex.ru"; /*Укажите адрес, на который должно приходить письмо*/
$sendfrom = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
$message = "$formData<br> <b>Имя отправителя:</b> $name <br><b>Телефон:</b> $phone<br>";
$send = mail ($to, $subject, $message, $headers);
?>
|
|

23.12.2016, 01:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Нет у вас понятия того, что я написал ранее, а потому продолжаете заниматься хренью. Как еще объяснить что искать причину нужно начиная с кода клиентского, а затем серверного, я не знаю.
|
|

23.12.2016, 09:26
|
 |
Новичок на форуме
|
|
Регистрация: 22.12.2016
Сообщений: 7
|
|
Как всегда чувствовал, что тут ловить нечего, зря только время потерял, никакой помощи не жди, одна лишь критика, набор кармы, мерзость и всё. Спасибо вам всем!
|
|

23.12.2016, 09:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Вы что ожидали что тут волшебники способные догадаться по отрывку кода что у вас на клиенте происходит? Это не так.
Вам дважды говорилось выяснить что отдает клиент, где результат этого?
Включайте отладчик в браузере, анализируйте и отвечайте на поставленные вопросы. Тогда можно более конкретно о чем то говорить.
А если будем строить из себя обидчивого мальчика и продолжать писать всякую хрень на сервере методом тыка, тога увы.
|
|
|
|